package cn.bonoon.services.plugins;
//package cn.bonoon.plugins.services;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import javax.persistence.TypedQuery;
//
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import cn.bonoon.kernel.query.Page;
//import cn.bonoon.kernel.query.PageCondition;
//import cn.bonoon.kernel.support.IdTextPair;
//import cn.bonoon.kernel.support.services.AbstractService;
//import cn.bonoon.plugins.core.GroupService;
//import cn.bonoon.plugins.entities.GroupEntity;
//import cn.bonoon.plugins.entities.GroupMemberEntity;
//import cn.bonoon.plugins.entities.PrivilegeEntity;
//import cn.bonoon.plugins.entities.RoleEntity;
//
//@Service
//@Transactional(readOnly = true)
//public class GroupServiceImpl extends AbstractService<GroupEntity> implements GroupService {
//	@Override
//	public List<Long> getRoleIdByGroup(Long id) {
//		String ql = "select x.R_ROLE_ID from RT_ROLE2GROUP x where x.R_GROUP_ID=:targetid";
//		return idList(ql, id);
//	}
//
//	@Override
//	@Transactional
//	public boolean updateRoles(Long id, Long[] roleIds) {
//		GroupEntity g = __get(id);	
//		g.getRoles().clear();
//		for(Long rid : roleIds){
//			g.getRoles().add(get(RoleEntity.class, rid));
//		}
//		merge(g);
//		return true;
//	}
//
//	@Override
//	public List<PrivilegeEntity> getPrivileges(Long gid) {
//		List<PrivilegeEntity> res = new ArrayList<PrivilegeEntity>();
//		String gql = "select x from PrivilegeEntity x left join x.role.groups g where g.id=:gid";
//		TypedQuery<PrivilegeEntity> tq = __query(PrivilegeEntity.class, gql);
//		res.addAll(tq.setParameter("gid", gid).getResultList());
//		return res;
//	}
//
//	@Override
//	@Transactional
//	public void save(GroupEntity entity, Long[] rids) {
//		if(null != rids){
//			entity.setRoles(new ArrayList<RoleEntity>());
//			for (Long rid : rids) {
//				entity.getRoles().add(get(rid, RoleEntity.class));
//			}
//		}
//		persist(entity);
//	}
//
//	@Override
//	@Transactional
//	public void update(GroupEntity entity, Long[] rids) {
//		entity.getRoles().clear();
//		if(null != rids){
//			for (Long rid : rids) {
//				entity.getRoles().add(get(rid, RoleEntity.class));
//			}
//		}
//		merge(entity);
//	}
//
//	@Override
//	public List<IdTextPair> accountsByGroup(Long id) {
//		String ql = "select new cn.bonoon.kernel.support.IdText(x.account.id, x.account.name) from GroupMemberEntity x where x.group.id=?1";
//		return __list(IdTextPair.class, ql, id);
//	}
//	@Override
//	public Page<GroupMemberEntity> groupAccount(Long id, PageCondition pc) {
//		return __page(GroupMemberEntity.class, "from GroupMemberEntity x where x.group.id=?", pc, id);
//	}
//	@Override
//	public Page<RoleEntity> groupRole(Long id, PageCondition pc) {
//		return __page(RoleEntity.class, "from RoleEntity x left join x.groups y where y.id=?", pc, id);
//	}
//}
